FALCON REGISTERS 3 **************************************************************************** 2 5 6 C O L O R - R E G I S T E R S ( F A L C O N ) **************************************************************************** $FFFF9800 [R/W] :$FC 765432__ ................................ Color $00 Red |||||| ++++++------ 0-63: Red $FFFF9801 [R/W] :$FC 765432__ .............................. Color $00 Green |||||| ++++++------ 0-63: Green $FFFF9802 [R/W] :$00 ****** $FFFF9803 [R/W] :$00 765432__ ............................... Color $00 Blue |||||| ++++++------ 0-63: Blue $FFFF9804 [R/W] :$FC Color $01 Red $FFFF9805 [R/W] :$FC Color $01 Green $FFFF9806 [R/W] :$00 ****** $FFFF9807 [R/W] :$00 Color $01 Blue : : : : : : : : : : : : $FFFF9BFC [R/W] :$00 Color $FF Red $FFFF9BFD [R/W] :$00 Color $FF Green $FFFF9BFE [R/W] :$00 ****** $FFFF9BFF [R/W] :$00 Color $FF Blue **************************************************************************** D S P - H O S T - I N T E R F A C E ( FA L C O N ) **************************************************************************** $FFFFA200 [R/W] :$00 76543_10 ........................ Host-Control-Register ||||| || ||||| |+---- 1: enable 'DSP-had-send'-IRQ ||||| +----- 1: enable 'DSP-ready to receive'-IRQ ||||+------- Hf2-Bit, userdef. Infobit from DSP to Host |||+-------- Hf3-Bit, userdef. Infobit from DSP to Host +++--------- set to zero $FFFFA201 [R/W] :$12 <===== $FFFFA202 [R/W] :$06 _6543_10 ..........................Host-Status-Register |||| || |||| |+---- 0: DSP busy |||| | 1: DSP had send |||| +----- 0: DSP busy |||| 1: DSP ready to receive |||+------- Hf0-Bit, userdef. Infobit from Host to DSP ||+-------- Hf1-Bit, userdef. Infobit from Host to DSP ++--------- set to zero $FFFFA203 [R/W] :$0F <===== $FFFFA204 [R/W] :$00 ________ ............................. I/O-Data-Path HH $FFFFA205 [R/W] :$00 76543210 ............................. Hi $FFFFA206 [R/W] :$00 76543210 ............................. Mi $FFFFA207 [R/W] :$00 76543210 ............................. Lo $03FC-$03FF : DSP-IRQ-vector. This vector is used for receiving or/and sending data from/to the DSP in interrupt- mode. HOW to send datawords to DSP in handshaking-technic: 1. step: wait until DSP ready to receive ($A202.w Bit 1 turns to 1) 2. step: write data to $A204.w-$A207.w 3. step: if you want to send once again>> goto 1. step Example: This routine corresponds to the DSP-XBIOS: LEA BUFFER(PC),A0 ;Buffer with DSP-Words MOVE.W #DSP_WORDS,D0 ;transfer max. 65535 DSP-Words LOOP: BTST #0,$FFFFA202.W ;is DSP ready to receive? BEQ.S LOOP 4 bytes: 'MOVE.L (A0)+,$FFFFA204.W ;transfer 4 bytes ;the highest byte will be ignored ;by the DSP 3 bytes: 'MOVE.B (A0)+,$FFFFA205.W ;transfer MOVE.B (A0)+,$FFFFA206.W ;3 bytes MOVE.B (A0)+,$FFFFA207.W ;(1 DSP-Word has 24 Bit) 2 bytes: 'MOVE.W (A0)+,D1 ;get 2 bytes EXT.L D1 ;sign-extension MOVE.W D1,$FFFFA204.W ;transfer 4 bytes 1 byte: 'MOVE.B #0,$FFFFA205.W ;transfer MOVE.B #0,$FFFFA206.W ;1 byte MOVE.B (A0)+,$FFFFA207.W DBRA D0,LOOP HOW to receive datawords from DSP in handshaking-technic: 1. step: wait until DSP had send ($A202.w Bit 0 turns to 1) 2. step: read data from $A204.w-$A207.w 3. step: if you want to receive once again >> goto 1. step Example: This routine corresponds to the DSP-XBIOS LEA BUFFER(PC),A0 ;Buffer with DSP-Words MOVE.W #DSP_WORDS,D0 ;transfer max. 65535 DSP-Words LOOP: BTST #1,$FFFFA202.W ;had DSP send? BEQ.S LOOP 4 bytes: 'MOVE.L $FFFFA204.W,(A0)+ ;transfer 4 bytes ;the highest byte is zero 3 bytes: 'MOVE.B $FFFFA205.W,(A0)+ ;transfer MOVE.B $FFFFA206.W,(A0)+ ;3 bytes MOVE.B $FFFFA207.W,(A0)+ ;(1 DSP-Word has 24 Bit) 2 bytes: 'MOVE.B $FFFFA206.W,(A0)+ ;transfer MOVE.W $FFFFA207.W,(A0)+ ;2 bytes 1 byte: 'MOVE.B $FFFFA206.W,D1 ;dummy-read, nobody knows why. MOVE.B $FFFFA207.W,(A0)+ ;transfer 1 byte DBRA D0,LOOP NOTE: it is possible to skip the 1. step. This mode increases the transfering-rate, but the DSP-program must be able to read the data immediately, otherwhise the data will be overwritten by the next one. It is important that the DSP is ready to transfer, therefor execute the 1. step before transfering data! (1. step > 2. step > 2. step > 2. step ......until end) HOW to send datawords to DSP in interrupt-technic: 1. step: IRQ-Instalation in special order: 1.: write the IRQ-program-address in the DSP-IRQ-vector 2.: write register $A203.w with $FF 3.: set bit 1 of Host-Control-Register now the DSP-IRQ is installed and enabled! 2. step: the style of the IRQ-vector-routine: 1.: read data from $A204.w-$A207.w 2.: end the IRQ-routine with a RTE 3. step: you have two possibilities to stop the IRQ-transfer: 1.: you clear bit 1 in the main program 2.: you clear bit 1 in the IRQ-program HOW to receive datawords fron DSP in interrupt-technic: 1. step: IRQ-Instalation in special order: 1.: write the IRQ-program-address in the DSP-IRQ-vector 2.: write register $A203.w with $FF 3.: set bit 0 of Host-Control-Register now the DSP-IRQ is installed and enabled! 2. step: the style of the IRQ-vector-routine: 1.: write data to $A204.w-$A207.w 2.: end the IRQ-routine with a RTE 3. step: you have two possibilities to stop the IRQ-transfer: 1.: you clear bit 0 in the main program 2.: you clear bit 0 in the IRQ-program NOTE: You have only one exception for sending and receiving data. But it is possible to send and receive data simultanously. In the IRQ- program you have to test bit 0/1 of the Host-Status-Register to get information about the transfering direction! **************************************************************************** M U L T I - F U N C T I O N - P E R I P H E R A L MC 68901 ( S T ) **************************************************************************** $FFFFFA00 [R/-] :$8F ****** $FFFFFA01 [R/W] :$ED GPIP-Data $FFFFFA02 [R/-] :$8F ****** $FFFFFA03 [R/W] :$04 Active-Edge $FFFFFA04 [R/-] :$8F ****** $FFFFFA05 [R/W] :$00 Data-Direction $FFFFFA06 [R/-] :$8F ****** $FFFFFA07 [R/W] :$DE Interrupt-Enable A $FFFFFA08 [R/-] :$8F ****** $FFFFFA09 [R/W] :$64 Interrupt-Enable B $FFFFFA0A [R/-] :$8F ****** $FFFFFA0B [R/W] :$02 Interrupt-Pending A $FFFFFA0C [R/-] :$8F ****** $FFFFFA0D [R/W] :$60 Interrupt-Pending B $FFFFFA0E [R/-] :$8F ****** $FFFFFA0F [R/W] :$00 Interrupt-In-Service A $FFFFFA10 [R/-] :$8F ****** $FFFFFA11 [R/W] :$00 Interrupt-In-Service B $FFFFFA12 [R/-] :$8F ****** $FFFFFA13 [R/W] :$5E Interrupt-Mask A $FFFFFA14 [R/-] :$8F ****** $FFFFFA15 [R/W] :$64 Interrupt-Mask B $FFFFFA16 [R/-] :$8F ****** $FFFFFA17 [R/W] :$48 Interrupt-Vektor $FFFFFA18 [R/-] :$FF ****** $FFFFFA19 [R/W] :$00 Timer-A-Control $FFFFFA1A [R/-] :$8F ****** $FFFFFA1B [R/W] :$00 Timer-B-Control $FFFFFA1C [R/-] :$8F ****** $FFFFFA1D [R/W] :$51 Timer-C+D-Control $FFFFFA1E [R/-] :$8F ****** $FFFFFA1F [R/W] :$00 Timer-A-Data $FFFFFA20 [R/-] :$8F ****** $FFFFFA21 [R/W] :$FF Timer-B-Data $FFFFFA22 [R/-] :$9F ****** $FFFFFA23 [R/W] :$AA Timer-C-Data $FFFFFA24 [R/-] :$8F ****** $FFFFFA25 [R/W] :$02 Timer-D-Data $FFFFFA26 [R/-] :$8F ****** $FFFFFA27 [R/W] :$00 Synchronous-Character $FFFFFA28 [R/-] :$8F ****** $FFFFFA29 [R/W] :$88 USART-Control $FFFFFA2A [R/-] :$8F ****** $FFFFFA2B [R/W] :$09 Receiver-Status $FFFFFA2C [R/-] :$FF ****** $FFFFFA2D [R/W] :$85 Transmitter-Status $FFFFFA2E [R/-] :$CF ****** $FFFFFA2F [R/W] :$FF USART-Data **************************************************************************** K E Y B O A R D / M I D I - A C I A S 6850 ( S T ) **************************************************************************** $FFFFFC00 [R/-] :$83 Keyboard-Status [-/W] :$83 Keyboard-Control $FFFFFC01 [R/-] :$FF ****** $FFFFFC02 [R/-] :$9C Keyboard-Receive [-/W] :$9C Keyboard-Send $FFFFFC03 [R/-] :$FF ****** $FFFFFC04 [R/-] :$02 Midi-Status [-/W] :$02 Midi-Control $FFFFFC05 [R/-] :$FF ****** $FFFFFC06 [R/-] :$02 Midi-Receive [-/W] :$02 Midi-Send $FFFFFC07 [R/-] :$FF ****** **************************************************************************** ? ? ? ? ? ? **************************************************************************** $FFFFFF82 [R/-] :$1C new $FFFFFF83 [R/-] :$00 new ******************************** END OF FILE *******************************